package com.huishu.goods.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huishu.commons.pojo.dto.DeductionStockDTO;
import com.huishu.commons.pojo.vo.CartItemGoodsVO;
import com.huishu.goods.pojo.dto.CategoryProductDTO;
import com.huishu.goods.pojo.dto.ProductPageDTO;
import com.huishu.goods.pojo.model.ProductDO;
import com.huishu.goods.pojo.vo.CategoryProductVO;
import com.huishu.goods.pojo.vo.ProductPageVO;
import com.huishu.goods.pojo.vo.ProductVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author generator@ljj
 * @since 2023-04-08
 */
public interface ProductMapper extends BaseMapper<ProductDO> {

    /**
     * 分页查询品类商品
     * @param page
     * @param categoryProductDTO
     * @return
     */
    IPage<CategoryProductVO.Product> categoryProduct(Page<CategoryProductVO.Product> page, @Param("params") CategoryProductDTO categoryProductDTO);

    /**
     *  查询购物车商品根据ids
     * @param ids
     * @return
     */
    List<CartItemGoodsVO> findCartItemGoods(@Param("ids") List<Long> ids);

    /**
     * 批量修改
     * @param deductionStockDTOS
     */
    void deductionStock(@Param("list") List<DeductionStockDTO> deductionStockDTOS);

    /**
     * 分页查询
     * @param page
     * @param productPageDTO
     * @return
     */
    IPage<ProductPageVO> pageList(Page<ProductPageVO> page, @Param("params") ProductPageDTO productPageDTO);

    /**
     * 查询推荐商品信息
     * @param ids
     * @return
     */
    List<CategoryProductVO.Product> findRecommenProducts(@Param("ids") List<Long> ids);

    /**
     * 查询所有赠品
     * @return
     */
    List<ProductVO> findGiveAll();

    /**
     * 查询购物车推荐商品
     * @return
     */
    List<CategoryProductVO.Product> findCartRecommen();
}
